1. Field of the Invention
The present invention generally relates to systems and methods for facilitating communication between automated entities, such as between remote services and applications associated therewith that are installed on devices.
2. Background
Numerous software applications have been developed for use on networked devices. Many of these applications rely on communication with a remote service, such as a Web service, to support at least some of the application functionalities or features. For example, a remote service may communicate with an application to notify the application or a user thereof that an event that has occurred, to deliver content to the user of the application, to update the application, or the like.
Facilitating such communication is difficult when the application is installed on a device that is deployed in a different network or subnet. It is often not possible to directly address devices in other networks across the Internet because the remote network is often protected by constraints like Firewalls and Network Address Translation (NAT). Thus, a remote service residing on a publicly accessible server may not be able to initiate communication with the device or application. To deal with this issue, some applications have been developed that perform periodic polling when the device upon which they are installed is active, thereby indicating availability for communication with a remote service. Such periodic polling may be referred to as providing a “heartbeat” and the individual polling messages may be referred to as “heartbeat messages.”
Providing a heartbeat for an application consumes processing resources of the device upon which the application is installed, processing resources of the network nodes used to relay and/or process the heartbeat messages, and bandwidth on the network links over which the heartbeat messages are relayed. As more and more applications that provide a heartbeat are installed on a device, the consumption of those resources will increase. This can lead to reduced performance by the device as well as reduced performance by the network to which the device is connected.
Furthermore, some devices may not be capable of communicating via the Internet at all. Consequently, such devices cannot support applications that rely on communication with a remote service to support at least some application functionality or features.